<?php

require_once(dirname(__FILE__).'/../../includes/groups_catalog.weight.field.inc');
require_once(dirname(__FILE__).'/../tokens/GcTokens.class.php');

class GcCreateNodeTypeHandler {
	
	
	
	// identyfikator systemowy nowego typu treści
	private $_pcid;
	
	// identyfikator dla użytkownika
	private $_name;
	
	// zawwartość pliku tworzącego typy zawartości
	private $_content;
	
  public function __construct($pcid,$name) {
    $this->_pcid = $pcid;
    $this->_name = $name;
    
    $filename = drupal_get_path('module','groups_catalog') . "/group_content.txt";
    $this->_content = implode ('', file ($filename));
    
  }
	
  /**
   * Podmieniamy tokeny w pliku z opisem rodzaju zawartości z wartościami
   * opisującymi aktualnie dodawany rodzaj zawartości
   * @return unknown_type
   */
  private function substituteTokensHandler() {
  
  	// podmień nazwę typu dla użytkownika
  	$this->_content = str_replace(GcTokens::TYPE_NAME, $this->_name, $this->_content);
  	
  	// podmień maszynową nazwę
  	$this->_content = str_replace(GcTokens::MACHINE_TYPE_NAME, $this->_pcid, $this->_content);
  	
  	$short_name = substr($this->_pcid, 0, 10);
  	
  	// podmieniamy krótką nazwę typu
    $this->_content = str_replace(GcTokens::SHORT_MACHINE_TYPE_NAME, $short_name, $this->_content);
  }
	/**
	 * Tworzy podstawowy rodzaj zawartości dla modułu
	 * @return unknown_type
	 */
	private function createTypeHandler() {
		 
		$this->substituteTokensHandler();
    $form_state = array(
       'values' => array(
            'type_name' => '<create>',
            'macro' => $this->_content,
      ),
     );
 
     db_query("INSERT INTO {gc_classes} (pcid, name, description) VALUES ('%s', '%s', '%s')", $this->_pcid, $this->_name,' ');
     
     drupal_execute("content_copy_import_form", $form_state);
     
     
	}
	
	
	/**
	 * Tworzy pola dodatkowe
	 * @return unknown_type
	 */
	private function createFieldsHandler() {
		 
     module_load_include('inc', 'content', 'includes/content.crud');
  
     $field = groups_catalog_field_weight_array();
     $field['type_name'] = $this->_pcid;
  
     content_field_instance_create($field); 
	}
	
	
	
	public function handle() {
		$this->createTypeHandler();
    $this->createFieldsHandler();
    
	}
}